﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Data.SqlClient;
namespace BuddhistSchools.DTO
{
    public static class Functions
    {
        #region MaHoa
        #region ky tu
        private static char[] tcvnchars = {
            'µ', '¸', '¶', '·', '¹', 
            '¨', '»', '¾', '¼', '½', 'Æ', 
            '©', 'Ç', 'Ê', 'È', 'É', 'Ë', 
            '®', 'Ì', 'Ð', 'Î', 'Ï', 'Ñ', 
            'ª', 'Ò', 'Õ', 'Ó', 'Ô', 'Ö', 
            '×', 'Ý', 'Ø', 'Ü', 'Þ', 
            'ß', 'ã', 'á', 'â', 'ä', 
            '«', 'å', 'è', 'æ', 'ç', 'é', 
            '¬', 'ê', 'í', 'ë', 'ì', 'î', 
            'ï', 'ó', 'ñ', 'ò', 'ô', 
            '­', 'õ', 'ø', 'ö', '÷', 'ù', 
            'ú', 'ý', 'û', 'ü', 'þ', 
            '¡', '¢', '§', '£', '¤', '¥', '¦'
        };

        private static char[] unichars = {
            'à', 'á', 'ả', 'ã', 'ạ', 
            'ă', 'ằ', 'ắ', 'ẳ', 'ẵ', 'ặ', 
            'â', 'ầ', 'ấ', 'ẩ', 'ẫ', 'ậ', 
            'đ', 'è', 'é', 'ẻ', 'ẽ', 'ẹ', 
            'ê', 'ề', 'ế', 'ể', 'ễ', 'ệ', 
            'ì', 'í', 'ỉ', 'ĩ', 'ị', 
            'ò', 'ó', 'ỏ', 'õ', 'ọ', 
            'ô', 'ồ', 'ố', 'ổ', 'ỗ', 'ộ', 
            'ơ', 'ờ', 'ớ', 'ở', 'ỡ', 'ợ', 
            'ù', 'ú', 'ủ', 'ũ', 'ụ', 
            'ư', 'ừ', 'ứ', 'ử', 'ữ', 'ự', 
            'ỳ', 'ý', 'ỷ', 'ỹ', 'ỵ', 
            'Ă', 'Â', 'Đ', 'Ê', 'Ô', 'Ơ', 'Ư'
        };

        private static string[] VNIchar = {"OÂ", "oâ", "yõ", "YÕ", "yû", "YÛ", "yø", "YØ", "öï", "ÖÏ", "öõ", 
                                                 "ÖÕ", "öû", "ÖÛ", "öø", "ÖØ", "öù", "ÖÙ", "uû", "UÛ", "uï", "UÏ", 
                                                 "ôï", "ÔÏ", "ôõ", "ÔÕ", "ôû", "ÔÛ", "ôø", "ÔØ", "ôù", "ÔÙ", "oä", 
                                                 "OÄ", "oã", "OÃ", "oå", "OÅ", "oà", "OÀ", "oá", "OÁ", "oû", "OÛ",
                                                 "oï", "OÏ", "eä", "EÄ", "eã", "EÃ", "eå", "EÅ", "eà", "EÀ", "eá", 
                                                 "EÁ", "eõ", "EÕ", "eû", "EÛ", "eï", "EÏ", "aë", "AË", "aü", "AÜ", 
                                                 "aú", "AÚ", "aè", "AÈ", "aé", "AÉ", "aä", "AÄ", "aã", "AÃ", "aå", 
                                                 "AÅ", "aà", "AÀ", "aá", "AÁ", "aû", "AÛ", "aï", "AÏ", "uõ", "UÕ",
                                                 "aê", "AÊ", "yù", "uù", "uø", "oõ", "où", "oø", "eâ", "eù", "eø", 
                                                 "aõ", "aâ", "aù", "aø", "YÙ", "UÙ", "UØ", "OÕ", "OÙ", "OØ", "EÂ", 
                                                 "EÙ", "EØ", "AÕ", "AÂ", "AÙ", "AØ"
     };

        private static string[] Unicodechar = {"Æ", "æ", "ỹ", "Ỹ", "ỷ", "Ỷ", "ỳ", "Ỳ", "ự", "Ự", 
                                                 "ữ", "Ữ", "ử", "Ử", "ừ", "Ừ", "ứ", "Ứ", "ủ", "Ủ", 
                                                 "ụ", "Ụ", "ợ", "Ợ", "ỡ", "Ỡ", "ở", "Ở", "ờ", "Ờ", 
                                                 "ớ", "Ớ", "ộ", "Ộ", "ỗ", "Ỗ", "ổ", "Ổ", "ồ", "Ồ", 
                                                 "ố", "Ố", "ỏ", "Ỏ", "ọ", "Ọ", "ệ", "Ệ", "ễ", "Ễ", 
                                                 "ể", "Ể", "ề", "Ề", "ế", "Ế", "ẽ", "Ẽ", "ẻ", "Ẻ", 
                                                 "ẹ", "Ẹ", "ặ", "Ặ", "ẵ", "Ẵ", "ẳ", "Ẳ", "ằ", "Ằ", 
                                                 "ắ", "Ắ", "ậ", "Ậ", "ẫ", "Ẫ", "ẩ", "Ẩ", "ầ", "Ầ", 
                                                 "ấ", "Ấ", "ả", "Ả", "ạ", "Ạ", "ũ", "Ũ", "ă", "Ă", 
                                                 "ý", "ú", "ù", "õ", "ó", "ò", "ê", "é", "è", "ã", 
                                                 "â", "á", "à", "Ý", "Ú", "Ù", "Õ", "Ó", "Ò", "Ê", 
                                                 "É", "È", "Ã", "Â", "Á", "À"
      };

        private static string[] VNIchar2 =     {"uø", "uù", "öù", "uû", "uï", "ö", "öø", "öû", "öï", "aù", 
                                                  "aá", "aú", "aø", "aà", "aû", "aï", "aü", "aë", "aâ", "aå", 
                                                  "aä", "oâ", "ô", "ôù", "oõ", "ôõ", "ôï", "où", "oø", "oû", 
                                                  "oï", "oá", "oà", "oå", "oã", "oä", "ôø", "ôû", "uõ", "öõ", 
                                                  "aõ", "aã", "eù", "eø", "eû", "eõ", "eï", "eâ", "eá", "eà", 
                                                  "eå", "eã", "eä", "aê", "aé", "aè", "í", "ì", "æ", "ó", 
                                                  "ò", "yù", "yø", "yû", "yõ", "î", "ñ", 
                                                  "UØ", "UÙ", "ÖÙ", "UÛ", "UÏ", "Ö", "ÖØ", "ÖÛ", "ÖÏ", "AÙ", 
                                                  "AÁ", "AÚ", "AØ", "AÀ", "AÛ", "AÏ", "AÜ", "AË", "AÂ", "AÅ", 
                                                  "AÄ", "OÂ", "Ô", "ÔÙ", "OÕ", "ÔÕ", "ÔÏ", "OÙ", "OØ", "OÛ", 
                                                  "OÏ", "OÁ", "OÀ", "OÅ", "OÃ", "OÄ", "ÔØ", "ÔÛ", "UÕ", "ÖÕ", 
                                                  "AÕ", "AÃ", "EÙ", "EØ", "EÛ", "EÕ", "EÏ", "EÂ", "EÁ", "EÀ", 
                                                  "EÅ", "EÃ", "EÄ", "AÊ", "AÉ", "AÈ", "Í", "Ì", "Æ", "Ó", 
                                                  "Ò", "YÙ", "YØ", "YÛ", "YÕ", "Î", "Ñ"
     };

        private static string[] Unicodechar2 = {      "ù", "ú", "ứ", "ủ", "ụ", "ư", "ừ", "ử", "ự", "á", 
                                                  "ấ", "ẳ", "à", "ầ", "ả", "ạ", "ẵ", "ặ", "â", "ẩ", 
                                                  "ậ", "ô", "ơ", "ớ", "õ", "ỡ", "ợ", "ó", "ò", "ỏ", 
                                                  "ọ", "ố", "ồ", "ổ", "ỗ", "ộ", "ờ", "ở", "ũ", "ữ", 
                                                  "ã", "ẫ", "é", "è", "ẻ", "ẽ", "ẹ", "ê", "ế", "ề", 
                                                  "ể", "ễ", "ệ", "ă", "ắ", "ằ","í", "ì", "ỉ", "ĩ", 
                                                  "ị", "ý", "ỳ", "ỷ", "ỹ", "ỵ", "đ", 
                                                  "Ù", "Ú", "Ứ", "Ủ", "Ụ", "Ư", "Ừ", "Ử", "Ự", "Á", 
                                                  "Ấ", "Ẳ", "À", "Ầ", "Ả", "Ạ", "Ẵ", "Ặ", "Â", "Ẩ", 
                                                  "Ậ", "Ô", "Ơ", "Ớ", "Õ", "Ỡ", "Ợ", "Ó", "Ò", "Ỏ", 
                                                  "Ọ", "Ố", "Ồ", "Ổ", "Ỗ", "Ộ", "Ờ", "Ở", "Ũ", "Ữ", 
                                                  "Ã", "Ẫ", "É", "È", "Ẻ", "Ẽ", "Ẹ", "Ê", "Ế", "Ề", 
                                                  "Ể", "Ễ", "Ệ", "Ă", "Ắ", "Ằ", "Í", "Ì", "Ỉ", "Ĩ", 
                                                  "Ị", "Ý", "Ỳ", "Ỷ", "Ỹ", "Ỵ", "Đ"
   };
        #endregion
        /// <summary>
        /// Ma hoa Enrcode
        /// </summary>
        /// <param name="strInput"></param>
        /// <returns></returns>
        public static string Enrcode(string strInput)
        {
            string strTmp;
            int r, BigNum, m, n, c, d, i;

            r = 0;
            BigNum = 32768;
            m = 69;
            n = 47;
            strTmp = "";

            byte[] arr = ASCIIEncoding.ASCII.GetBytes(strInput);
            for (i = 0; i < arr.Length; i++)
            {
                c = Convert.ToInt32(arr[i]);
                if (c >= 48 && c <= 57) d = c - 48;
                else if (c >= 63 && c <= 90) d = c - 53;
                else if (c >= 97 && c <= 122) d = c - 59;
                else d = -1;
                if (d >= 0)
                {
                    r = (r * m + n) % BigNum;
                    d = (r & 63) ^ d;
                    if (d >= 0 && d <= 9) c = d + 48;
                    else if (d >= 10 && d <= 37) c = d + 53;
                    else if (d >= 38 && d <= 63) c = d + 59;
                    strTmp += (char)c;
                }
                else
                {
                    strTmp += (char)c;
                }

            }
            return strTmp;
        }
        #endregion
        public static byte[] encryptData(string data)
        {
            System.Security.Cryptography.MD5CryptoServiceProvider md5Hasher = new System.Security.Cryptography.MD5CryptoServiceProvider();
            byte[] hashedBytes;
            System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding();
            hashedBytes = md5Hasher.ComputeHash(encoder.GetBytes(data));
            return hashedBytes;
        }
        public static string md5(string data)
        {
            return BitConverter.ToString(encryptData(data)).Replace("-", "").ToLower();
        }
    }
}

      
